[% setvar title The Perl 6 Summary for the fortnight ending 2004-04-18 %]
<div id="archive-notice">
    <h3>This file is part of the Perl 6 Archive</h3>
    <p>To see what is currently happening visit <a href="http://www.perl6.org/">http://www.perl6.org/</a></p>
</div>
<div class='pod'>
<a name='The Perl 6 Summary for the fortnight ending 2004-04-18'></a><h1>The Perl 6 Summary for the fortnight ending 2004-04-18</h1>
<p>The only problem with summarizing two week's worth of Perl 6 happenings
is that there's twice as much stuff to summarize. Still, there's no way
I could have made the time to write a summary last week so I'll take my
lumps. I am exceedingly grateful that Apocalypse 12 (Objects) wasn't
released the Thursday <i>before</i> Easter though, as it is I can clear the
decks for the expected perl6-language explosion next week.</p>
<p>We'll start with perl6-internals as usual.</p>
<a name='Initializers, finalizers and fallbacks'></a><h2>Initializers, finalizers and fallbacks</h2>
<p>There was some discussion of the various functions that get called by
object initialization/destruction etc. Dan wondered what he'd been
thinking when he declared that there would be distinct <code>FINALIZE</code>,
<code>DELETE</code> and <code>CLEANUP</code> properties (instead of declaring that a
function must be called (say) <code>FINALIZE</code>, you can mark any function
with a <code>FINALIZE</code> property, and Parrot will recognise that as the
function to call at finalization time). Andy Wardley quibbled about
American/British spelling, but Tim Bunce pointed out that the 'ize'
form is preferred by the Oxford English Dictionary (and your humble
summarizer).</p>
<p>Leo meanwhile made a (Warnocked) proposal for a new init scheme.</p>
<p><a href='http://groups.google.com/groups?selm=a06010207bc988256b491@' target='_blank'>groups.google.com</a>[172.24.18.98]</p>
<p><a href='http://groups.google.com/groups?selm=200404060833.i368Xou16545@thu8.leo.home' target='_blank'>groups.google.com</a></p>
<a name='New SDL Parrot bindings'></a><h2>New SDL Parrot bindings</h2>
<p>Taking advantage of Parrot's new, improved object system, chromatic
updated us all on his efforts to provide a shiny OO interface to the
SDL library. Jens Rieks wondered about chromatic's implementation
choices, and posted a few suggestions and questions. Dan reckoned he'd
prefer it if the SDL bindings used Parrots internal events systems. The
catch being that Parrot doesn't actually have an internal events system
yet...</p>
<p>Later in the fortnight, chromatic posted an initial release and
promised to post his notes and slides from the Portland Perl Mongers
meeting where he was showing it off. There's no sign of 'em yet though.</p>
<p><a href='http://groups.google.com/groups?selm=1081225995.12079.27.camel@localhost' target='_blank'>groups.google.com</a></p>
<p><a href='http://groups.google.com/groups?selm=1081317984.19190.2.camel@localhost' target='_blank'>groups.google.com</a></p>
<a name='new method'></a><h2><code>new</code> method</h2>
<p>Jens Rieks and chromatic were unsure of the best name for a constructor
method. They'd like to be able to write a method called <code>new</code>, but
IMCC wouldn't allow it. Leo Tötsch pointed out that there's already a
default constructor method: <code>__init</code>. However, chromatic wasn't too
keen on it because he wanted to be able to pass arguments to the
constructor. Leo pointed out that, although it wasn't officially
supported, you could pass arguments in the same was as if you were
making a normal parrot function call.</p>
<p>Dan pointed out that our current initialization system is some way from
being the final one (which will use properties to mark constructor
methods). What we have now is more like an allocator than a real
constructor.</p>
<p><a href='http://groups.google.com/groups?selm=200404041830.09293.parrot@jensbeimsurfen.de' target='_blank'>groups.google.com</a></p>
<a name='Overriding __find_method in PASM?'></a><h2>Overriding <code>__find_method</code> in PASM?</h2>
<p>Noting that, according to PDD15, defining a method called __find_method
should allow Perl 5 AUTOLOAD-like behaviour, chromatic wondered if it
was workable yet and, if it wasn't, how he should go about adding
it. Leo confessed that what was in the docs was a cut and paste error
and AUTOLOAD behaviour hadn't yet been defined. He suggested a
workaround using exceptions (which turned out to be overkill for what
chromatic needed, but it looks interesting.)</p>
<p><a href='http://groups.google.com/groups?selm=1081138355.7995.26.camel@localhost' target='_blank'>groups.google.com</a></p>
<a name='Language interoperability'></a><h2>Language interoperability</h2>
<p>Randy W. Sims popped over from the Module-Build mailing list, where
they've been discussing plugin architectures to allow for the
modification and extension of Module::Build's capabilities.
One of the desiderata is that, once the transition to Parrot is
underway, it should be possible to write plugins in any language
supported by Parrot. (Mmm... a build system written in Befunge, it's
what the world's been crying out for I tell you). There are currently
two competing schemes, one involving manipulating the class hierarchy
at runtime and the other involving plugins held in particular
directories and a formal API. Randy wondered if there were any
technical reasons to choose one scheme or another.</p>
<p>Dan reckoned that there were no particular technical reasons, but the
inheritance based scheme rather offended his sensibilities, going so
far as to say &quot;No way in hell it'll ever make it in as parrot's
standard module building system if you do it [the inheritance munging
solution]&quot;.</p>
<p><a href='http://groups.google.com/groups?selm=406FDFAB.3050008@thepierianspring.org' target='_blank'>groups.google.com</a></p>
<a name='Save the Return Continuation!'></a><h2>Save the Return Continuation!</h2>
<p>The ongoing discussion about continuations seems to be fizzling
slightly. Piers Cawley had proposed moving the return continuation out
of P1 and held 'somewhere else' (possibly the control stack) and then,
when a routine needed to do cunning things with the current
continuation it could access it with some op (say
<code>get_current_cont</code>). Dan reckoned he was okay with the idea, and Luke
Palmer voted in favour of a special RC register. Dan asked for further
discussion and the whole thing got tossed onto the horns of Warnock's
Dilemma.</p>
<p><a href='http://groups.google.com/groups?selm=a06010205bc987b530fde@' target='_blank'>groups.google.com</a>[172.24.18.98]</p>
<a name='Rounding up pending objects'></a><h2>Rounding up pending objects</h2>
<p>Dan asked for a list of pending issues with objects so he could get
things nailed down and finished so we could move on. Jarkko Hietaniemi, chromatic
and Leo all chimed in with suggestions.</p>
<p><a href='http://groups.google.com/groups?selm=a06010206bc9880273177@' target='_blank'>groups.google.com</a>[172.24.18.98]</p>
<a name='Release the Streams!'></a><h2>Release the Streams!</h2>
<p>Jens Rieks posted a &quot;working version&quot; of his new Stream library,
promising more documentation later in the month. Leo and Dan looked on
it, saw that it was good, and granted Jens commit
privileges. Congratulations are in order.</p>
<p>Later, Leo found some bugs around continuation and context
handling and set about tracking it down. (Jens had thought it was an
issue with string handling.)</p>
<p><a href='http://groups.google.com/groups?selm=200404062141.12274.parrot@jensbeimsurfen.de' target='_blank'>groups.google.com</a></p>
<a name='Parrot libraries'></a><h2>Parrot libraries</h2>
<p>Leo pointed out that we currently have two different places to find
Parrot runtime stuff: <b><i>runtime/parrot/*</i></b> and <b><i>library/</i></b>. He proposed
we pick one, add some support for handling library search paths, work
out a scheme to organize library paths and add some library tests. Dan
decided everything should go in <b><i>runtime/parrot</i></b> and mused about
handling library metadata.</p>
<p><a href='http://groups.google.com/groups?selm=4073A4CC.7010006@toetsch.at' target='_blank'>groups.google.com</a></p>
<a name='Splitting interpreter.c'></a><h2>Splitting <b><i>interpreter.c</i></b></h2>
<p>Apparently <b><i>interpreter.c</i></b> runs to rather more than 2500 lines. Leo
proposed splitting it into multiple files. Dan told him to go for it.</p>
<p><a href='http://groups.google.com/groups?selm=4073BAAC.5030806@toetsch.at' target='_blank'>groups.google.com</a></p>
<a name='Incorporating ICU'></a><h2>Incorporating ICU</h2>
<p>I have a rule of thumb about Unicode: Nobody likes it. Nor does anyone
dislike it enough to come up with something better.</p>
<p>Jeff Clites dropped the list a line to let everyone know that he's
still working on integrating the ICU Unicode library into Parrot. (A
thankless task if ever there was one.) With some encouragement from Dan
he posted his (huge) patch. After some debate, Dan checked it in giving
a baseline to start dealing with any issues.</p>
<p>Jeff explained the rationale of his approach (which I have to confess I
skimmed, I don't care how strings work, so long as they work). Jarkko
liked it, noting that other approaches lead &quot;into combinatorial
explosion and instant insanity&quot;. Jarkko went on to share his Unicode pain
and generally back Jeff up in discussions with Leo. If you're
interested in the gory details of Unicode implementation, I commend
this thread to you. Or you can just trust Jeff, Jarkko, Leo, Larry and
Dan to get it right (which is what I'm doing).</p>
<p><a href='http://groups.google.com/groups?selm=CFB7F3BE-88B8-11D8-ADF3-000393A6B9DA@mac.com' target='_blank'>groups.google.com</a></p>
<p><a href='http://groups.google.com/groups?selm=612F0D93-8A6A-11D8-ADF3-000393A6B9DA@mac.com' target='_blank'>groups.google.com</a> -- Jeff's explanations</p>
<a name='Tracking JIT down'></a><h2>Tracking JIT down</h2>
<p>In another of his ongoing series of simple perl tasks for the
interested, Dan asked for a script to generate a list of all the ops
that aren't JITted (along with a few extra goodies that would be
nice). Stefan Lidman was the man with the script, which was rapidly
checked in.</p>
<p><a href='http://groups.google.com/groups?selm=a0610050ebc9a03e47738@' target='_blank'>groups.google.com</a>[10.0.1.2]</p>
<a name='Diamond inheritance is broken'></a><h2>Diamond inheritance is broken</h2>
<p>If you've ever sung bass in choir you'll be aware that sometimes a bass
line is sung on one note for rather a long time. For the past two weeks
perl6-internals' repetitive bass note has been the failure of test 17
in <b><i>t/pmc/object-meths.t</i></b>. Should you find yourself building a CVS
parrot and get caught by this, please be aware that we know about the
problem it's just Dan's suffering from a tuit shortage and there are
other important strings he's concentrating on.</p>
<a name='New libraries'></a><h2>New libraries</h2>
<p>Jens &quot;The librarian&quot; Rieks released another set of libraries,
&quot;Data::Sort&quot;, &quot;Data::Replace&quot; and &quot;Data::Escape&quot;. Tim Bunce wasn't
that keen on his choice of names (and indeed functionality). The
current front runners for new names for these are &quot;PMC::DeepReplace&quot;,
&quot;PMC::Printable&quot;, &quot;PMC::Sort&quot; and &quot;PMC::Dumper&quot;.</p>
<p><a href='http://groups.google.com/groups?selm=200404082028.49211.parrot@jensbeimsurfen.de' target='_blank'>groups.google.com</a></p>
<a name='Attribute questions'></a><h2>Attribute questions</h2>
<p>Mark Sparshatt wondered how to handle class attributes, with particular
reference to implementing Ruby. Dan reckons we'll get proper class
attributes once he's sorted out metaclasses. Mark muddied the water
somewhat by pointing out that Ruby has two kinds of class attributes;
ones that are hung off metaclasses and those that are (I think) held in
the class namespace. Annoyingly they have two distinct behaviours.</p>
<p><a href='http://groups.google.com/groups?selm=4075919F.30905@yahoo.co.uk' target='_blank'>groups.google.com</a></p>
<a name='Tcl PMCs'></a><h2>Tcl PMCs</h2>
<p>Will Coleda posted his first cut at a set of PMCs to support TCL
semantics. He apparently had problems with the Array PMC's assumption
that 'empty' slots contained PerlUndefs, which meant he had to
implement a custom TclArray PMC. For the rest of the thread Will and
Leo worked out how to re-jig the patch so the PMCs could be dynamically
loaded before Leo checked it into the repository.</p>
<p><a href='http://groups.google.com/groups?selm=rt-3.0.8-28393-84164.14.5997263059787@perl.org' target='_blank'>groups.google.com</a></p>
<a name='Parrot Everywhere'></a><h2>Parrot Everywhere</h2>
<p>I've not really mentioned his work in recent summaries, but Marcus
Thiesen has been doing sterling work helping to get Parrot up and
running on a bewildering variety of systems. Thanks for the sterling
work Marcus.</p>
<p><a href='http://www.luusa.org/~marcus/parrottest' target='_blank'>www.luusa.org</a> -- Marcus's Smoker</p>
<a name='Warnocked'></a><h2>Warnocked</h2>
<p>Bryan C. Warnock posted a patch to Parrot's <b><i>CREDITS</i></b>, correcting a
long defunct email address. You might enjoy the patch:</p>
<pre>    N: Bryan C. Warnock
   +D: Little things here and there in pre-Parrot days.
   +D: And, yes, {sigh}, *that* Warnock.
   +E: <a href='mailto:bwarnock@raba.com'>bwarnock@raba.com</a></pre>
<p>He's too modest of course, Bryan started off writing the Perl 6
Summaries. When he stopped doing them due (I presume) to a lack of
time, I missed them so much I started writing my own. So don't blame me
for these, blame Bryan.</p>
<p>Rather appropriately, nobody commented on the patch.</p>
<p><a href='http://groups.google.com/groups?selm=rt-3.0.8-28383-84147.3.00438339593441@perl.org' target='_blank'>groups.google.com</a></p>
<a name='Unicode step by step'></a><h2>Unicode step by step</h2>
<p>Leo Tötsch posted a quick overview of steps to get Unicode support into
Parrot. Right now, if you turn Unicode on, your (at least) first build
is going to take a looong time.</p>
<p>Debate centred on whether or not the Parrot distribution should include
the full ICU distribution. (It's looking like a qualified yes, but we
will attempt to use an existing installation of ICU if we can find it.)</p>
<p><a href='http://groups.google.com/groups?selm=4077F315.6060200@toetsch.at' target='_blank'>groups.google.com</a></p>
<a name='Disappearing PASM files in the test directory'></a><h2>Disappearing PASM files in the test directory</h2>
<p>Leo wondered what had happened to the generated .pasm files in <b><i>t/*/</i></b>
(he wasn't alone in this, but he was the person who posted). Will
Coleda confessed that he'd doctored Parrot::Test so that they ended up
in <b><i>/tmp</i></b> (probably). He didn't say why.</p>
<p><a href='http://groups.google.com/groups?selm=4077EC4D.3040806@toetsch.at' target='_blank'>groups.google.com</a></p>
<a name='ICU build pains'></a><h2>ICU build pains</h2>
<p>I don't normally discuss issues people have with building Parrot on
various different machines either (the threads usually die out quite
quickly: &quot;Did you do this?&quot; &quot;Oh! Thanks, that worked.&quot;) but the ICU
check in seems to have caused no small amount of pain on Linux systems
for some reason.</p>
<p>Alberto Manuel Brandao Simoes posted an error log for a failing
build. Jeff Clites, our Guru of ICU set about helping him to track the
problem down with incomplete success. Dan pointed everyone at Debian's
patches to get ICU to build, and suggested that people wait for his
patch to allow the use of an existing ICU installation.</p>
<p>Various other threads continued the discussion, at the end of which Dan
had checked in a patch that seemed to solve the problems.</p>
<p><a href='http://groups.google.com/groups?selm=40784BF0.20608@alfarrabio.di.uminho.pt' target='_blank'>groups.google.com</a></p>
<p><a href='http://groups.google.com/groups?selm=a06100503bca05b379e6f@' target='_blank'>groups.google.com</a>[10.0.1.2]</p>
<p><a href='http://groups.google.com/groups?selm=a06100505bca05f409099@' target='_blank'>groups.google.com</a>[10.0.1.2]</p>
<a name='Tangled strings'></a><h2>Tangled strings</h2>
<p>Dan posted the beginnings of his plan for how strings are going to work
in Parrot. On the face of it, not a contentious issue. However, strings
are text, and text is a human cultural artifact, which means there's
politics and really, really, really ugly complexities to deal with if
you want to Do It Right (assuming you can decide what Right is). There
was much discussion. And then there was some more. The trouble is, this
stuff is Important (and it's very important that we get it right
*before* we start implementing the matching engine, otherwise some of
the assumptions it might make about how fast various string
manipulations are might turn out to be very wrong indeed...) and
Hard. Because it's Hard it's rather tricky to summarize, so I'm going
to punt and just give you the root message.</p>
<p><a href='http://groups.google.com/groups?selm=a06100500bca0384ce81c@' target='_blank'>groups.google.com</a>[10.0.1.2]</p>
<a name='Basic Library Paths'></a><h2>Basic Library Paths</h2>
<p>Dan finally got 'round to designing how Parrot was going to handle
searching for libraries and such. Oh, and he and Jarkko engaged in some
unseemly bragging about VMS which has had all this stuff fixed for
ages. There was a fair bit of discussion, but the response was
generally positive.</p>
<p><a href='http://groups.google.com/groups?selm=a06100500bca449931036@' target='_blank'>groups.google.com</a>[10.0.1.2]</p>
<a name='Alternative object initializer calling scheme'></a><h2>Alternative object initializer calling scheme</h2>
<p>Leo announced that he'd added a new, property based scheme for object
initialization. Instead of initializing an object automagically with
the <code>__init</code> method, you mark any method with the <code>BUILD</code> property
and Parrot handles calling it for you. You do have to set the
<code>CALL__BUILD</code> environment variable before starting Parrot to make use
of it though.</p>
<p><a href='http://groups.google.com/groups?selm=40768F70.1010106@toetsch.at' target='_blank'>groups.google.com</a></p>
<a name='Joseph Höök is back'></a><h2>Joseph Höök is back</h2>
<p>Long time no see Joseph.</p>
<p><a href='http://groups.google.com/groups?selm=381-220044011141848685@kth.se' target='_blank'>groups.google.com</a></p>
<a name='Version bump time?'></a><h2>Version bump time?</h2>
<p>Dan suggested that, once the ICU patch is properly nailed down, it
could be time to start the push to a 0.1.1 (or even 0.2.0) release.</p>
<p><a href='http://groups.google.com/groups?selm=a06100502bc9cbc80e445@' target='_blank'>groups.google.com</a>[172.24.18.98]</p>
<a name='Lies, damned lies and benchmarks'></a><h2>Lies, damned lies and benchmarks</h2>
<p>Leo posted a set of benchmark timings for the OO examples when run with
all current optimizations. The numbers are looking rather good:
Parrot's faster than everything on all but one test, where it's
outperformed by Python. Of course, these aren't the benchmarks that'll
determine whether Dan gets a Pie at OSCON...</p>
<p><a href='http://groups.google.com/groups?selm=408009CE.2070804@toetsch.at' target='_blank'>groups.google.com</a></p>
<a name='PMC Constants'></a><h2>PMC Constants</h2>
<p>Leo asked for comments on a proposal for dealing with PMC constants. No
comments so far.</p>
<p><a href='http://groups.google.com/groups?selm=407FF01A.2080102@toetsch.at' target='_blank'>groups.google.com</a></p>
<a name='Meanwhile, in perl6-language'></a><h1>Meanwhile, in perl6-language</h1>
<a name='Backticks'></a><h2>Backticks</h2>
<p>A proposal for a new use of backticks was made (because the proposer
didn't think the current semantics deserved their privileged place in
the language's Huffman table). Some people disagreed. Some people
disagreed rather strongly. Toys were thrown out of prams. People called
each other narrow minded. It wasn't pretty. With any luck people are
going to calm down, apologize to each other for getting so aerated over
something so trivial, and the list can settle down to the more
rewarding task of dealing with the implications of Apocalypse 12.</p>
<p><a href='http://groups.google.com/groups?selm=20040414121848.GJ3645@c4.convolution.nl' target='_blank'>groups.google.com</a></p>
<a name='Compatibility with Perl 5'></a><h2>Compatibility with Perl 5</h2>
<p>Dave Cantrell wondered how Perl 6 would spot legacy code. Everyone
forgot to refer him to the appropriate section of Apocalypse 1 in which
Larry lays down the two rules:</p>
<ul>
<li><a name='Files that are pulled in with require etc will be deemed to be Perl 6 unless they contain a package declaration.'></a>Files that are pulled in with <code>require</code> etc will be deemed to be Perl
6 unless they contain a <code>package</code> declaration.</li>
<li><a name='Files that are run as scripts (perl some_script.pl) are treated as Perl 5 unless it's obviously Perl 6. The proposed way of making this obvious would be to begin the script with module Main.'></a>Files that are run as scripts (<code>perl some_script.pl</code>) are treated as
Perl 5 unless it's obviously Perl 6. The proposed way of making this
obvious would be to begin the script with <code>module Main</code>.</li>
</ul>
<p>Easy eh? It didn't stop the thread running and running though (not
helped by someone getting the rules of thumb rather badly wrong in the
early stages).</p>
<p><a href='http://groups.google.com/groups?selm=20040413121602.GA5213@bytemark.barnyard.co.uk' target='_blank'>groups.google.com</a></p>
<a name='Oooh look, it's an apocalypse'></a><h2>Oooh look, it's an apocalypse</h2>
<p>Apocalypse 12 finally stepped out of the drafty shadows into the glare
of publicity. It's very long. I expect next week will be rather busy on
p6l.</p>
<p><a href='http://www.perl.com/pub/a/2004/04/16/a12.html' target='_blank'>www.perl.com</a></p>
<a name='And we're done'></a><h1>And we're done</h1>
<p>A reminder to everyone on perl6-language: Play Nice.</p>
<p>If you find these summaries useful or enjoyable, please consider
contributing to the Perl Foundation to help support the development of
Perl. You might also like to send me feedback at
mailto:<a href='mailto:p6summarizer@bofh.org.uk.'>p6summarizer@bofh.org.uk.</a></p>
<p><a href='http://donate.perl-foundation.org/' target='_blank'>donate.perl-foundation.org</a> -- The Perl Foundation</p>
<p><a href='http://dev.perl.org/perl6/' target='_blank'>dev.perl.org</a> -- Perl 6 Development site</p>
</div>
